﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Acoris.Foundation
{
    public interface IStack<T>:IEnumerable<T>
    {
        /// <summary>
        /// 
        /// </summary>
        void Clear();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        bool Contains(T item);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="array"></param>
        /// <param name="index"></param>
        void CopyTo(T[] array, int index);

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        T Peek();

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        T Pop();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="item"></param>
        void Push(T item);

        /// <summary>
        /// 
        /// </summary>
        int Count { get; }
    }
}
